home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 145
/
Gekkan Dennou Club - 2000.6 Vol. 145 (Japan).7z
/
Gekkan Dennou Club - 2000.6 Vol. 145 (Japan) (Track 1).bin
/
games
/
spassion
/
source.lzh
/
SOURCE
/
ENEMY.H
< prev
next >
Wrap
Text File
|
2000-03-29
|
4KB
|
163 lines
#ifndef ENE_X
/* signed int の座標値から固定小数部(上位16bit)を取り出すマクロ */
#define ENE_X (*((short *) (&ene->lx)))
#define ENE_Y (*((short *) (&ene->ly)))
#define ENE_VX (*((short *) (&ene->vx)))
#define ENE_VY (*((short *) (&ene->vy)))
#endif
typedef struct ENEMY{
signed short x, y; /* 座標 */
short pt; /* スプライトパターンNo. */
short info; /* 反転コード・色・優先度を表わすデータ */
signed int lx, ly; /* 32bit X,Y 座標 ( l = longword ) */
signed int vx, vy; /* 速度 */
HIT_XY4 *hit_p[10]; /* 対プレイヤー当たり判定 */
HIT_XY4 *hit_o[10]; /* 対オプション当たり判定(全体) */
HIT_XY4 *hit_s[10]; /* 対ショット当たり判定(全体) */
short type; /* 種類 */
short hp; /* 耐久力 */
short arg; /* 予備の引き数 */
short damage; /* ダメージを受けた */
short damage_kind; /* ダメージの種類 */
short no_dead; /* 当たったときにプレイヤーが死ぬか(0だと死ぬ) */
short count; /* 出現してからの時間 */
short dead_count; /* 死んでからの時間 */
short flush_count; /* フラッシュ用カウント */
short anim_count; /* アニメーションカウント */
short state; /* 動き制御用 */
short angle; /* 方向 */
short flg; /* etc */
short point; /* 点数 */
short (*func_enemy_move)(struct ENEMY *); /* 移動関数へのポインタ */
struct PLAYER *player; /* プレイヤーへのポインタ */
short work; /* ワーク */
short work2;
short work3;
short work4;
char cwork; /* ワーク(char) */
char cwork2;
char cwork3;
char cwork4;
char cwork5;
short m_work; /* 移動用ワーク */
short m_work2;
short m_work3;
short m_work4;
short s_work; /* ショット用ワーク */
short s_work2;
short s_work3;
short s_work4;
/* 移動用ワーク(SubMoveTo() 用) */
signed int move_ax, move_ay; /* 加速度 */
unsigned short move_seq;/* 加速中、等速度運動中、減速中 */
signed short move_count;/* 加速度を何回足すか */
signed short move_count2; /* 一定速度で進む回数 */
signed short move_count3; /* 実際に加速した回数 */
signed short move_counter; /* 何回足すか数える */
/* コア関係のワーク */
signed short core_x, core_y; /* コア座標 */
short core_pt; /* スプライトパターンNo. */
short core_info; /* 反転コード・色・優先度を表わすデータ */
/* パーツ関係のワーク */
struct ENEMY *parts1; /* パーツへのポインタ */
struct ENEMY *parts2;
struct ENEMY *parts3;
struct ENEMY *parts4;
short parts1_work; /* ワーク */
short parts1_work2;
short parts2_work;
short parts2_work2;
short parts3_work;
short parts3_work2;
/* キャラクター間通信用ワーク */
struct ENEMY *parent; /* 親オブジェクト */
struct ENEMY *child; /* 子オブジェクト */
unsigned char child_kill; /* 親が子を殺す時(親が設定) */
unsigned char child_death; /* 子が死んだことを親に知らせる(子が設定) */
struct ENEMY *next, *pre; /* リスト構造用 */
}ENEMY;
/*
* 敵情報構造体
*/
typedef struct _ENEINFO{
short hp; /* 硬さ */
short points; /* 得点 */
short pt; /* スプライト番号 */
short info; /* パレット、反転、プライオリティ情報 */
short pt_info; /* 回転するか */
short rx, ry; /* 当たり判定の大きさ */
short (*func_enemy_move)( struct ENEMY * ); /* 動き用の関数 */
short (*move_expl)( struct ENEMY * ); /* 爆発時の関数 */
int crash_sdno; /* 破壊されたときの音番号 */
}ENEINFO;
void InitEnemy( void );
void MoveEnemy( void );
ENEMY *MakeEnemy(short, signed short, signed short, short, struct ENEMY *);
ENEMY *AllocEnemy( void );
ENEMY *EraseEnemy( ENEMY *ene );
enum {
PLAYER_ATTACK=1,
OPTION_ATTACK,
SHOT_ATTACK,
};
enum {
ENEMY_ZAKO00=0,
ENEMY_ZAKO01,
ENEMY_ZAKO02,
ENEMY_ZAKO03,
ENEMY_ZAKO04,
ENEMY_ZAKO05,
ENEMY_HATCH,
ENEMY_BATTERY,
ENEMY_VOLCANO,
ENEMY_ROCK,
ENEMY_MINE,
ENEMY_CRYSTAL_L,
ENEMY_CRYSTAL_M,
ENEMY_CRYSTAL,
ENEMY_BUBBLE_L,
ENEMY_BUBBLE,
ENEMY_BRAIN,
ENEMY_BOSS_M00,
ENEMY_BOSS_M01,
ENEMY_DRAGON,
ENEMY_DRAGON_BODY,
ENEMY_BOSS01,
ENEMY_BOSS02,
ENEMY_BOSS03,
ENEMY_BOSS04,
ENEMY_LBOSS,
ENEMY_BOSSARM,
ENEMY_BOSSARM1,
ENEMY_CORE,
ENEMY_SHIELD,
ENEMY_LCORE,
ENEMY_LBATTERY1,
ENEMY_LBATTERY2,
ENEMY_LBATTERY3,
ITEM,
};